The present invention relates to techniques for characterizing computer system workloads.
Workload characterization and performance analysis are important factors in computer system design. Design tradeoffs which are made during the development of a new computer system are typically based on a thorough analysis of the way in which a small number of workloads run on existing computer systems. It is assumed that this small collection of workloads is representative of the majority of the commercial workloads. A major challenge for the designers of computer systems is therefore to select a set of benchmarks that best illustrate the behavior of the commercial workloads they are targeting.
Workload characterization involves building a compact model that accurately and repeatably describes a workload and captures its static and dynamic behavior. Performance analysis for proposed designs is usually carried out using performance models driven by stimulus from one or more benchmarks of interest. For example, in the early stages of system analysis, memory hierarchy behavior is typically characterized using “per-instruction rates” of cache miss transaction sequences. These rates are obtained using cache simulations of instruction streams or bus traces.
Additionally, memory-level parallelism is characterized and infinitely large cache behavior parameters are used. They are obtained through processor simulation using instruction streams. Traces can also be used to study disk and network activity.
Trace collection is therefore a prerequisite for system performance analysis. Unfortunately, collecting a trace is a costly and arduous task that requires significant machine resources and human effort. Consequently, performance analysis as outlined above is typically feasible only for a handful of benchmarks. However, conclusions from performance analysis are clearly desirable for a large number of customer workloads. One solution to this problem is to approximate workload behavior and to compare conclusions with those obtained for a thoroughly studied benchmark.
Because system architectures are typically optimized for a few benchmarks that are thought to be representative of a number of important workloads, it is desirable to determine which workloads are well approximated by a benchmark, or, more generally to determine what portion of the total “behavior space” each benchmark represents.